package com.example.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.dto.SetmealDto;
import com.example.entity.Setmeal;

import java.util.List;

/**
 * <p>
 * 套餐 服务类
 * </p>
 *
 * @author czx
 * @since 2022-04-28
 */
public interface ISetmealService extends IService<Setmeal> {

    /**
     * 分页查询
     *
     * @param page 页数
     * @param pageSize 页大小
     * @param name 套餐名
     * @return 分页信息
     */
    Page<SetmealDto> page(int page, int pageSize, String name);

    /**
     * 保存数据到setmeal表和setmeal_dish表
     *
     * @param setmealDto 数据传输对象
     * @return 是否保存
     */
    boolean saveWithSetmealDish(SetmealDto setmealDto);

    /**
     * 根据id从setmeal表和setmeal_dish表进行查询
     *
     * @param id setmeal表的id
     * @return 数据传输对象
     */
    SetmealDto getByIdWithSetmealDish(Long id);

    /**
     * 更新套餐信息
     *
     * @param setmealDto 数据传输对象
     * @return 更新结果
     */
    boolean updateWithSetmealDish(SetmealDto setmealDto);

    /**
     * 套餐状态多次或一次修改
     *
     * @param status 修改状态
     * @param ids 套餐id
     * @return 修改结果
     */
    boolean updateByStatus(int status, Long[] ids);

    /**
     * 删除套餐
     *
     * @param ids 套餐id
     * @return 删除结果
     */
    boolean removeWithSetmealDish(List<Long> ids);

    /**
     * 套餐信息
     *
     * @param setmeal 套餐
     * @return 结果
     */
    List<Setmeal> listByIdAndStatus(Setmeal setmeal);
}
